const fetch=require('../../utils/fetch');
// pages/list/list.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    title:'页面标题',
    shops:[],
    pageIndex:0,
    pageSize:10,
    category:{},
    hasMore:true,      //默认存在更多数据
    isFinish:true      //请求数据是否完成
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // console.log(options,this.data.title); 
    fetch(`categories/${options.cat}`).then((res)=>{
        if(res.statusCode==200){
           this.setData({
             title:res.data.name,
             category:res.data
           });
           wx.setNavigationBarTitle({
            title:this.data.title
          });
        }
        // 请求对应店铺信息
        this.loadMore();
    });
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function (options) {
    wx.setNavigationBarTitle({
      title:this.data.title
    });
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function () {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function () {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function () {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
     //重新加载数据=>重置当前shops数组,重置当前页码, 重新调用loadMore, 
     this.setData({
       shops:[],
       hasMore:true,
       pageIndex:0
     });
     this.loadMore().then(()=>{
      //请求数据完成后, 手动关闭下拉loading样式
       wx.stopPullDownRefresh();
     });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function () {
    if(this.data.isFinish){
      this.setData({
        isFinish:false
      });
      // console.log(`差不多了,触底了`);
      this.loadMore().then(()=>{
        this.setData({
          isFinish:true
        });
      });
    }
      
  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function () {

  },
  // 加载更多数据
  loadMore:function () {
    // 如果不存在更多数据, 则不再发送http请求
    if(!this.data.hasMore){
      return false;
    }
    let {pageIndex,pageSize}=this.data;
    const params={_page:++pageIndex,_limit:pageSize};
    return fetch(`categories/${this.data.category.id}/shops`,params).then((res)=>{
      if(res.statusCode==200){
        // 从响应头中和获取数据总条数
        const totalCount=res.header['X-Total-Count'];
        // hasMore为true||false
        const hasMore=pageIndex*pageSize<totalCount;
        // 将最新请求到的数据和原来的数据连接成一个数组, 最新请求的数据为于数组的末尾
        const shops=this.data.shops.concat(res.data);
        // 更新数据模型中的数组
        this.setData({
          shops,
          pageIndex,
          hasMore
        });
        
      }
    });
  },
  // 商户搜索
  searchHandle:function(event) {
    // 获取文本框的值
    const keyword=event.detail.value;
    if(keyword.trim()==''){
        wx.showToast({
          title:'请输入搜索关键字',
          icon:'none',
          duration:1000
        });
    }
    // console.log('搜索功能已触发',event); 
    fetch(`categories/1/shops?q=${keyword}&_page=1&_limit=10`).then((res)=>{
      if(res.statusCode==200){
        if(res.data.length==0){
          this.setData({
            hasMore:false
          });
        }
        this.setData({
          shops:res.data
        });
      }
    });
  }

})